Computer and information networks such as the Internet allow computer systems to exchange streams of data such as audio data, video data, multimedia data or other stream data between software applications that operate on such computer systems. As an example, a user controlling a web browser operating on a client computer system can select a hyperlink that references audio data that an audio server computer system can serve to the client computer system over the Internet. In response to such a selection, the web browser can invoke an audio player software application that operates in conjunction with the web browser on the client computer system. The audio player software application can communicate with the audio server software application operating on the audio stream computer system in order to establish an audio data connection between the client computer system and the audio server. Once such a connection is established, the audio server can begin serving the audio data back to the audio player software application operating on the client computer system. The audio player software application can then receive and play the audio data through speakers coupled to the client computer system for the enjoyment of the user.
When the audio data, video data, multimedia data or other such data is real-time or near real-time data, the audio player software application and audio server software application may utilize one or more real-time or near real-time data transfer communication or control protocols in order to appropriately control the flow of data from the server to the client computer system. An example of such a real-time data transfer communications or control protocol is the Real Time Streaming Protocol (RTSP). Other such protocols exist as well. Generally, RTSP is an application-level protocol for control over the delivery of data with real-time properties such as audio data, video data, and the like. RTSP provides a framework to establish and control one or more time-synchronized streams of continuous media such as audio and video stream data supplied from a stream server to a client computer system. RTSP does not typically deliver or carry the continuous stream data itself, but rather operates as a set of out-of-band messages or requests that can be exchanged between the client and a stream server in order to control and synchronize delivery of the stream data. In other words, RTSP operates as a “network remote control” for multimedia servers.
According to the general operation of RTSP, the client and a stream server exchange RTSP requests in order to adjust characteristics of the flow of stream data served from the stream server to the client. As an example, a client may send an RTSP “PLAY” request specifying an offset, play time, location or absolute position in the stream data at which to begin playing or serving the stream data. The stream server receives the RTSP PLAY request and begins serving the stream data at the requested play time. During receipt of the stream data, the client may determine a requirement to alter a transmission characteristic of the stream data such as, for example, to increase or decrease the bandwidth or rate at which the stream server serves the stream data, or to seek forward in the stream data to a desired offset (referred to as absolute positioning). As an example, the client may detect that the stream server needs to serve the stream data at a higher bandwidth or rate in order for the client to be able to reproduce the stream data for the user in a realistic or real-time manner or at a better quality of service. In response, the client may send an RTSP message to increase the rate at which the stream server serves the stream data. This RTSP message or request propagates through the network (i.e., through a series of one or more data communications devices such as switches and routers) until it reaches the stream server and which point the stream server adjusts the bandwidth at which the stream data is served according to the RTSP bandwidth adjustment message.
As another example, if the user operating the client desires to rapidly advance forward or backward within the content of the stream data, the user may operate fast-forward or rewind buttons provided by the audio client software application (e.g., via a graphical user interface) which causes the client to issue one or more RTSP requests to the stream server that each specify a particular incremented offset or absolute position within the stream data at which the server is to begin serving the stream data. The offset or absolute positions are relative to the beginning of the stream data. Accordingly, if the user depresses and holds a “FAST FORWARD” graphical user interface button provided by the client receiving the stream data, the client will issue a series of RTSP play requests each containing successively incremented absolute position values. Upon receipt of each of such RTSP play requests, the stream server begins serving stream data at the indicated absolute or relative position in the stream data until the next request is received to provide the appearance to the user of rapidly playing or advancing into the stream data.
For complete details on the operation of RTSP, the reader is directed to Request For Comment 2326 (RFC-2326) which is a document maintained by the Internet Engineering Task Force (IETF) that specifies an Internet standards track protocol for RTSP. The teaching and contents of the RFC-2326 document are hereby incorporated by reference herein in their entirety.
Other conventional data transfer communications protocols can carry out the processing and messaging required to carry or transport the actual data. As an example, the Real Time Protocol (RTP) can be used as a transport mechanism to propagate real-time stream data through a computer network. The RTP protocol encodes the real-time stream data into a packet and includes sequencing and/or timing information into the data such as virtual time fields that allow a recipient to identify how the portions of stream data in one RTP encoded packet relate to other portions of stream data in other RTP packets. In other words, RTP can encode data with timing information about the media thus providing a reference to the recipient for how the media can be played back.